/***********************************************
 **** 版权声明处 **
 ****  为了方便阅读和维护，请严格遵守相关代码规范，谢谢   ****
 *******************************************/
package com.hnisi.board.view
{
	/*******************************************
	 **** huangjixin,2012-6-12,上午9:51:07 **
	 **** 仪表板容器  **
	 *******************************************/
	import com.hnisi.board.common.Global;
	
	import flash.display.BitmapData;
	import flash.events.ContextMenuEvent;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Rectangle;
	import flash.net.FileReference;
	import flash.ui.ContextMenu;
	import flash.ui.ContextMenuItem;
	
	import mx.graphics.ImageSnapshot;
	import mx.graphics.codec.PNGEncoder;
	import mx.managers.PopUpManager;
	
	import spark.components.Group;
	import spark.components.SkinnableContainer;
	
	/*[Event(name="pdfBytesReady", type="com.hnisi.board.pdf.event.PdfEvent")]*/
	public class DashBoardContainer extends SkinnableContainer
	{
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// private 类私有静态变量和静态常量声明处。（全部大写，使用下划线进行分割）
		// 例如：private static const EXAMPLE:String = "example";
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// public 类公有静态变量和静态常量声明处。（全部大写，使用下划线进行分割）
		// 例如：public static const EXAMPLE:String = "example";
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// private 私有变量声明处，请以“_”开头定义变量
		// 例如：private var _example:String;
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// public 公有变量声明处
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		private var _dragDropZones:Vector.<DragDropZone>;
		
		private var saveItem:ContextMenuItem;
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// 构造函数，初始化相关工作可以放在里面
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		public function DashBoardContainer()
		{
			super();
			addEventListener(Event.ENTER_FRAME,onEnterFrame);
			
			//新建右鍵菜單；
			/*saveItem = new ContextMenuItem("保存");
			saveItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,onSaveItemSelected);
			var contextMenu:ContextMenu = new ContextMenu();
			contextMenu.customItems.push(saveItem);
			this.contextMenu = contextMenu;*/
		}//构造函数结束
		
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// getter和setter函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		public function get dragDropZones():Vector.<DragDropZone>
		{
			return _dragDropZones;
		}
		
		public function set dragDropZones(value:Vector.<DragDropZone>):void
		{
			_dragDropZones = value;
		}
		
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// 相关事件响应函数和逻辑函数存放处
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		/**
		 * 彈窗保存為PNG或者PDF 
		 * @param event
		 * 
		 */
		protected function onSaveItemSelected(event:ContextMenuEvent):void
		{
			/*var printPdfWin:PrintPdfTitleWindow = PopUpManager.createPopUp(this,PrintPdfTitleWindow,true) as PrintPdfTitleWindow;
			PopUpManager.centerPopUp(printPdfWin);
			printPdfWin.dashBoardContainer = this;
			printPdfWin.printBtn.addEventListener(MouseEvent.CLICK, function onprintBtnClick(event:MouseEvent):void{
				
			});*/
			var bmp:BitmapData = ImageSnapshot.captureBitmapData(this,null,null,null,null,true);
			var encoder:PNGEncoder = new PNGEncoder();
			var file:FileReference = new FileReference();
			file.save(encoder.encode(bmp),"file.png");
		}
		
		/**
		 * 同步容器大小； 
		 * @param event
		 * 
		 */
		protected function onEnterFrame(event:Event):void
		{
			if(!Global.getInstance().dashBoardContainerRect){
				Global.getInstance().dashBoardContainerRect= new Rectangle(this.x,this.y,this.width,this.height);
			}
			
			Global.getInstance().dashBoardContainerRect.x= this.x;
			Global.getInstance().dashBoardContainerRect.y= this.y;
			Global.getInstance().dashBoardContainerRect.width= this.width;
			Global.getInstance().dashBoardContainerRect.height= this.height;
			Global.getInstance().dashBoardContainer = this;
		}

		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		// override 覆盖函数
		//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
		override protected function  createChildren():void{
			super.createChildren();
			
			for each (var dragDropZone:DragDropZone in dragDropZones) 
			{
				addElement(dragDropZone);
			}
			
		}
	}//类结束
}//包结束